<script>
    //1、不存在变量提升与存在暂时性死区

    console.log(a);//undefined  在声明之前有a：变量提升  
    var a=1;
    // 执行过程：
    // var a;
    // console.log(a);
    // a=1;


    // let
    // console.log(b);//Cannot access 'b' before initializatio
    // let b=1;



    //2、同一个作用域内不能重复声明
    // let b;//Identifier 'b' has already been declared
    // let a;//Identifier 'a' has already been declared
    function fun(){
        let a=2;
        console.log(a);//2
    }
    fun()



    // 3、块级作用域
    // 作用域，在这个区域生效
    // 块就是语句块，表现形式为 {这里可以写任何语句}

    // var num=1;
    // function f(){
    //     var num=2;
    // }
    // if(true){
    //     var num=3;
    // }

    // for(var i=0;i<3;i++){
    //     var num=4;
    // }

    // {
    //     var num=5;
    // }

    // console.log(num);//5


    // let num=1;
    // function f(){
    //     let num=2;
    // }
    // if(true){
    //     let num=3;
    // }

    // for(var i=0;i<3;i++){
    //     let num=4;
    // }
    // {
    //     let num=5;
    // }

    // console.log(num);//1


    // 全局作用域，局部作用域（父级作用域，子级作用域）
    // 如果子级作用域没有和父级同名的变量，子级可以使用父级作用域的变量
    // let num=1;
    // function f(){
    //     num=2;
    // }
    // f()
    // if(true){
    //    num=3;
    // }

    // for(var i=0;i<3;i++){
    //     num=4;
    // }
    // {
    //     num=5;
    // }
    // console.log(num);//5



    let num=1;
    {   
        // num=5;//Cannot access 'num' before initialization

        // console.log(num);//Cannot access 'num' before initialization
        let num=10    
    }





</script>